home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 2
/
Atari Mega Archive CD - Volume 2.iso
/
minix
/
up1510b.tgz
/
up1510b
/
src
/
test
/
test2.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-07-23
|
1KB
|
75 lines
/* test 2 */
#include <stdio.h>
extern errno;
int kk = 0;
char buf[2048];
main()
{
int i;
printf("Test 2 ");
fflush(stdout); /* have to flush for child's benefit */
for (i = 0; i < 19; i++) {
test20();
}
printf("ok\n");
exit(0);
}
test20()
{
/* Test pipes */
int fd[2];
int n, i, j, ij, q = 0, nn, m = 0, k;
if (pipe(fd) < 0) {
printf("pipe error. errno= %d\n", errno);
exit(0);
}
i = fork();
if (i < 0) {
printf("fork failed\n");
exit(0);
}
if (i != 0) {
/* Parent code */
close(fd[0]);
for (i = 0; i < 2048; i++) buf[i] = i & 0377;
for (q = 0; q < 8; q++) {
if (write(fd[1], buf, 2048) < 0) {
printf("write pipe err. errno=%d\n", errno);
exit(0);
}
}
close(fd[1]);
wait(&q);
if (q != 256 * 58) {
printf("wrong exit code %d\n", q);
exit(0);
}
} else {
/* Child code */
close(fd[1]);
for (q = 0; q < 32; q++) {
n = read(fd[0], buf, 512);
if (n != 512) {
printf("read yielded %d bytes, not 512\n", n);
exit(0);
}
for (j = 0; j < n; j++)
if ((buf[j] & 0377) != (kk & 0377)) {
printf("wrong data: %d %d %d \n ", j, buf[j] & 0377, kk & 0377);
} else {
kk++;
}
}
exit(58);
}
}